CD_SONG_XU
Overview
Calculate drag coefficient of a particle using the Song-Xu correlation for spherical and non-spherical particles.
Excel Usage
=CD_SONG_XU(Re, sphericity, S)
Re(float, required): Particle Reynolds number [-]sphericity(float, optional, default: 1): Sphericity of the particle (1.0 for sphere)S(float, optional, default: 1): Ratio of equivalent sphere area to projected area [-]
Returns (float): Drag coefficient [-], or error message (str) if input is invalid.
Examples
Example 1: Sphere at Re = 30
Inputs:
| Re |
|---|
| 30 |
Excel formula:
=CD_SONG_XU(30)
Expected output:
| Result |
|---|
| 2.3431 |
Example 2: Sphere at Re = 100
Inputs:
| Re |
|---|
| 100 |
Excel formula:
=CD_SONG_XU(100)
Expected output:
| Result |
|---|
| 1.1614 |
Example 3: Non-spherical particle
Inputs:
| Re | sphericity | S |
|---|---|---|
| 50 | 0.8 | 1.2 |
Excel formula:
=CD_SONG_XU(50, 0.8, 1.2)
Expected output:
| Result |
|---|
| 1.8969 |
Example 4: Cube-like particle
Inputs:
| Re | sphericity | S |
|---|---|---|
| 30 | 0.806 | 1 |
Excel formula:
=CD_SONG_XU(30, 0.806, 1)
Expected output:
| Result |
|---|
| 2.6957 |
Python Code
import micropip
await micropip.install(["fluids"])
from fluids.drag import Song_Xu as fluids_Song_Xu
def cd_song_xu(Re, sphericity=1, S=1):
"""
Calculate drag coefficient of a particle using the Song-Xu correlation for spherical and non-spherical particles.
See: https://fluids.readthedocs.io/fluids.drag.html#fluids.drag.Song_Xu
This example function is provided as-is without any representation of accuracy.
Args:
Re (float): Particle Reynolds number [-]
sphericity (float, optional): Sphericity of the particle (1.0 for sphere) Default is 1.
S (float, optional): Ratio of equivalent sphere area to projected area [-] Default is 1.
Returns:
float: Drag coefficient [-], or error message (str) if input is invalid.
"""
# Validate inputs
try:
Re = float(Re)
sphericity = float(sphericity)
S = float(S)
except (ValueError, TypeError):
return "Error: All parameters must be numbers."
if Re <= 0:
return "Error: Re must be positive."
if sphericity <= 0 or sphericity > 1:
return "Error: Sphericity must be between 0 and 1."
if S <= 0:
return "Error: S must be positive."
try:
result = fluids_Song_Xu(Re=Re, sphericity=sphericity, S=S)
if result != result: # NaN check
return "Calculation resulted in NaN."
return float(result)
except Exception as e:
return f"Error: {str(e)}"